iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
Python

進擊的Python系列 第 10

Day10-模組與封包(莎夏)

  • 分享至 

  • xImage
  •  

我超愛食物!超香的啦!我是莎夏~我分享Python模組與封包

https://ithelp.ithome.com.tw/upload/images/20240818/20163257spqv8svnUw.jpg
圖片來源:(https://forum.gamer.com.tw/C.php?bsn=43473&snA=11713)

模組(Module)

在 Python 中,模組是包含 Python 代碼文件。模組可以包含函數、變量、類型
模組可以用來組織程式碼,更易於管理和維護。模組還可以用來重複使用程式碼,使更有效率。要使用模組,需要先將導入到主程式中。導入模組可以使用 import 語句
模組的擴展名是 .py

import my_module
# 將導入名為 my_module 模組

要使用模組中的函數或變量,可以使用 module_name.function_namemodule_name.variable_name 語法

import my_module

def main():
    print(my_module.add_two_numbers(1, 2))

if __name__ == "__main__":
    main()

# 輸出 3

模組還可以使用 from 語句導入
from 語句可以導入模組中的特定函數或變量

from my_module import add_two_numbers

def main():
    print(add_two_numbers(1, 2))

if __name__ == "__main__":
    main()

# 輸出 3

Python 附帶許多標準庫模組,可用各種任務,例如:文件處理、數學計算、網路通信
使用標準庫模組可以節省時間並快速開發應用程式

Python標準庫模組

math 數學函數

  • sin()cos()sqrt()

random 隨機數函數

  • randint()random()

os 操作系統相關函數

  • open()read()write()

sys 系統相關函數

  • argv()exit()

如何使用模組?

1.匯入模組

import math

# 使用模組中的函式
result = math.sqrt(16)
print(result)  # 輸出 4.0

2.匯入特定函式或變數

from math import pi

print(pi)  # 輸出 3.141592653589793

3.為模組取別名

import numpy as np

# 使用別名 np 來呼叫 numpy 模組中的函式
array = np.array([1, 2, 3])

自定義模組

要創建模組,請創建一個帶有 .py 擴展名文件,並將其放入一個目錄中
然後,可以使用 import 語句導入模組

# my_module.py
def greet(name):
    print(f"Hello, {name}!")

# 在另一個檔案中導入自定義模組
import my_module

my_module.greet("Alice")

結論

Python 模組是擴展程式功能的重要工具。透過合理地使用模組,可以大幅提高開發效率,讓你的程式碼更加簡潔、可讀和可維護


封包(package)

Python 中 封包(package) 是用來組織 模組(module) 一種方式
封包可以用來將相關的模組組織在一起,並提供一個統一的入口點來使用這些模組

建立封包

要建立一個封包,首先需要在一個資料夾中建立一個 __init__.py 檔案
__init__.py 檔案是封包的入口點,會在封包被匯入(import)時被執行

匯入封包

要匯入一個封包,可以使用 import 語句
import 語句可以用來匯入整個封包,也可以用來匯入封包中的特定模組

匯入封包中模組

要匯入封包中的特定模組,可以使用 import 語句後面跟著模組的名稱
例如,如果封包的名稱為 mypackage,其中包含一個名為 mymodule 的模組

import mypackage.mymodule

匯入封包中所有模組

要匯入封包中的所有模組,可以使用 from 語句
from 語句可以用來匯入封包中的所有模組,也可以用來匯入封包中的特定模組

from mypackage import *

封包命名空間

封包命名空間是封包中所有模組的名稱空間的集合
當匯入一個封包時,Python會將封包的命名空間添加到當前作用域的命名空間中

封包應用場景

  • 組織相關的模組
  • 提供一個統一的入口點來使用模組
  • 隱藏模組的實現細節
  • 提高模組的可重用性
# 建立一個名為 mypackage 的資料夾

# 在 mypackage 資料夾中建立一個 __init__.py 檔案

# 在 __init__.py 檔案中加入以下程式碼

def print_hello():
    print('Hello, world!')

# 在 mypackage 資料夾中建立一個名為 mymodule.py 檔案

# 在 mymodule.py 檔案中加入以下程式碼

def print_goodbye():
    print('Goodbye, world!')

# 匯入 mypackage 封包

import mypackage

# 使用 mypackage.print_hello() 來列印 'Hello, world!'

mypackage.print_hello()

# 使用 mypackage.mymodule.print_goodbye() 來列印 'Goodbye, world!'

mypackage.mymodule.print_goodbye()

程式碼中,mypackage 封包包含一個名為 __init__.py 的入口點檔案和一個名為 mymodule.py 的模組 __init__.py 檔案中包含一個 print_hello() 函式,mymodule.py 檔案中包含一個 print_goodbye() 函式

import mypackage

會將 mypackage 封包的命名空間添加到當前作用域的命名空間中
因此,可以使用 mypackage.print_hello() 來呼叫 mypackage 封包中的 print_hello() 函式

import mypackage.mymodule

會將 mypackage.mymodule 模組的命名空間添加到當前作用域的命名空間中
因此,可以使用 mypackage.mymodule.print_goodbye() 來呼叫 mypackage.mymodule 模組中的 print

my_package
├── init.py
└── my_module.py


上一篇
Day9-函數(柯尼)
下一篇
Day11-類別(約翰)
系列文
進擊的Python36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言